寻找约束非线性多变量函数的最小值

您所在的位置:网站首页 option value怎么读 寻找约束非线性多变量函数的最小值

寻找约束非线性多变量函数的最小值

2023-09-21 09:04| 来源: 网络整理| 查看: 265

要最小化的函数,指定为函数句柄或函数名称。fun 函数接受向量或数组 x,并返回实数标量 f,即在 x 处计算的目标函数值。

fmincon 以 x0 参数的形状将 x 传递给目标函数和任何非线性约束函数。例如,如果 x0 是 5×3 数组,则 fmincon 将 x 以 5×3 数组的形式传递给 fun。但是,在将 x 转换为列向量 x(:) 后,fmincon 会将线性约束矩阵 A 或 Aeq 乘以 x。

将 fun 指定为文件的函数句柄:

x = fmincon(@myfun,x0,A,b)

其中 myfun 是一个 MATLAB® 函数,例如

function f = myfun(x) f = ... % Compute function value at x

您还可以为匿名函数指定 fun 作为函数句柄:

x = fmincon(@(x)norm(x)^2,x0,A,b);

如果您可以计算 fun 的梯度且 SpecifyObjectiveGradient 选项设置为 true,设置如下

options = optimoptions('fmincon','SpecifyObjectiveGradient',true)则 fun 必须在第二个输出参数中返回梯度向量 g(x)。

如果您还可以计算黑塞矩阵,并通过 optimoptions 将 HessianFcn 选项设置为 'objective',且将 Algorithm 选项设置为 'trust-region-reflective',则 fun 必须在第三个输出参数中返回黑塞函数值 H(x),它是一个对称矩阵。fun 可以给出稀疏黑塞矩阵。有关详细信息,请参阅适用于 fminunc 信赖域或 fmincon 信赖域反射算法的 Hessian 矩阵。

如果您还可以计算黑塞矩阵,并且 Algorithm 选项设置为 'interior-point',则有另一种方法将黑塞矩阵传递给 fmincon。有关详细信息,请参阅适用于 fmincon 内点算法的 Hessian 矩阵。有关使用 Symbolic Math Toolbox™ 计算梯度和黑塞矩阵的示例,请参阅Calculate Gradients and Hessians Using Symbolic Math Toolbox。

interior-point 和 trust-region-reflective 算法允许您提供黑塞矩阵乘法函数。此函数给出黑塞乘以向量的乘积结果,而不直接计算黑塞矩阵。这可以节省内存。请参阅Hessian 矩阵乘法函数。

示例: fun = @(x)sin(x(1))*cos(x(2))

数据类型: char | function_handle | string



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3